package com.ywu.demand.management.standard.data;

import com.ywu.demand.management.standard.dto.YwuDemandManageProjectDto;
import com.ywu.demand.management.standard.dto.YwuDemandManageProjectGroupDto;
import com.ywu.demand.management.standard.dto.YwuDemandManageProjectVersionDto;
import com.ywu.demand.management.standard.entity.YwuDemandManageProjectEntity;
import com.ywu.demand.management.standard.entity.YwuDemandManageProjectGroupEntity;
import com.ywu.demand.management.standard.entity.YwuDemandManageProjectVersionEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface YwuDemandManageProjectRepository {
    void insertProject(@Param("model")YwuDemandManageProjectEntity entity);

    void updateProject(@Param("model")YwuDemandManageProjectEntity entity);

    void deleteProject(@Param("model")YwuDemandManageProjectEntity entity);

    YwuDemandManageProjectEntity getEntity(@Param("model")YwuDemandManageProjectEntity entity);

    int queryListCount(@Param("model") YwuDemandManageProjectDto dto);

    List<YwuDemandManageProjectEntity> queryList(@Param("model") YwuDemandManageProjectDto dto);

    void insertGroupUser(@Param("model")YwuDemandManageProjectGroupEntity entity);

    void deleteGroupUser(@Param("model")YwuDemandManageProjectGroupEntity entity);

    YwuDemandManageProjectGroupEntity getGroupUserEntity(@Param("model")YwuDemandManageProjectGroupEntity entity);

    List<YwuDemandManageProjectGroupEntity> queryGroupUserList(@Param("model") YwuDemandManageProjectGroupDto dto);

    void insertProjectVersion(@Param("model") YwuDemandManageProjectVersionEntity entity);

    void updateProjectVersion(@Param("model") YwuDemandManageProjectVersionEntity entity);

    void deleteProjectVersion(@Param("model") YwuDemandManageProjectVersionEntity entity);

    YwuDemandManageProjectVersionEntity getProjectVersionEntity(@Param("model") YwuDemandManageProjectVersionEntity entity);

    int queryVersionListCount(@Param("model")YwuDemandManageProjectVersionDto dto);

    List<YwuDemandManageProjectVersionEntity> queryVersionList(@Param("model")YwuDemandManageProjectVersionDto dto);

    List<YwuDemandManageProjectVersionEntity> queryVersionListNoPage(@Param("model")YwuDemandManageProjectVersionDto dto);

    List<YwuDemandManageProjectEntity> queryProjectListByUser(@Param("model") YwuDemandManageProjectGroupEntity search);

    void deleteProjectVersionByProjectId(@Param("model") YwuDemandManageProjectEntity delete);

    void deleteGroupUserByProjectId(@Param("model") YwuDemandManageProjectEntity delete);

    int queryGroupUserCount(@Param("model") YwuDemandManageProjectGroupDto dto);
}
